<?php

class NotificationController extends Controller {

	/**
	 * Setup the layout used by the controller.
	 *
	 * @return void
	 */

    
	protected function setupLayout()
	{
		if ( ! is_null($this->layout))
		{
			$this->layout = View::make($this->layout);
		}
	}
    
    /*Esta función guarda un usuario y si existe actualiza el gcmcode que proporciona google, en principio siempre van a existir ya que para llegar hasta aquí tiene que estar registrado en la aplicacion*/
    
    /*$username quiza deberia ser el email del usuario o la id*/
    public function saveUser($username, $gcmcode){
              $response = array("success" => "0");
              $sql  ="INSERT INTO usuarios (username, gcmcode) VALUES ('" . stripslashes($username) . "', '" . stripslashes($gcmcode) . "') 
                ON DUPLICATE KEY UPDATE gcmcode = '" . stripslashes($gcmcode)."' ; ";
             /* 
             quiza se puede usar laravel para ejecutar la consulta con la siguiente sentencia
             DB::statement('drop table users');*/
              $result = mysql_query($sql);
              if(mysql_affected_rows() > 0)
               $response["success"] = "1";  
              
              return json_encode($response);
     }
    
    /*Aqui recuperamos un usuario, en concreto su gcmcode*/
    public function getUser($username){
          $response = array("success" => 0);
          
        /*Aqui si que deberias usar las querys de laravel*/
    //    $result =  DB::table('usuarios')->where('email', $email)->first();
          $sql = "SELECT username, gcmcode
            FROM usuarios 
            WHERE username='".stripslashes($username)."';";
          $result = mysql_query($sql);
          if(mysql_num_rows($result) > 0){
            $data = mysql_fetch_array($result);
           
            return $data;
          } else {
           return false;  
          }
    }
    
    
    /*Aqui enviamos un mensaje, el collapseKey nos informa un grupo de notificaciones o notificaciones del mismo tipo. google lo usara para recuperar todas las notificaciones relacionadas con un collapseKey, parecido al map reduce de Hadoop. El username( email o id en nuestro caso ) lo neceistamos para recuperar el gcmcode especifica para el usuario y el messageText pues puedes imaginartelo

*/
    function sendMessageToPhone($collapseKey, $messageText, $username)
     {
          include_once 'users.php';
          $user = new users();
          $data = $user->getUser($username); 
          if($data != false){
          
              /*Aqui va el codigo que te da google para el servicio, como el api key de google maps*/
           $apiKey = 'AIzaSyAGsKmRfZHLWiXg4TFaDE17vVSLTsRgWmk';
           
            /*el gcm code que da google es el que identifica al usuario*/  
           $userIdentificador = $data["gcmcode"];
           
           $headers = array('Authorization:key=' . $apiKey);
           $data = array(
             'registration_ids' => $userIdentificador,
             'collapse_key' => $collapseKey,
             'data.message' => $messageText);
          
           $ch = curl_init();
          
           curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send");
           if ($headers)
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
           curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
           curl_setopt($ch, CURLOPT_POST, true);
           curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
           curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
          
           $response = curl_exec($ch);
           $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
           if (curl_errno($ch)) {
            return 'fail';
           }
           if ($httpCode != 200) {
            return 'status code 200';
           }
           curl_close($ch);
           return $response;
          } else {
           return 'no user';
          }
    } 
    
    
    
    
    

}